package leedcode_path.treeNoDE;

import java.util.ArrayList;
import java.util.List;

public class 二叉树的所有路径 {
    /*
    * 给你一个二叉树的根节点 root ，按 任意顺序 ，返回所有从根节点到叶子节点的路径。

叶子节点 是指没有子节点的节点。


示例 1：


输入：root = [1,2,3,null,5]
输出：["1->2->5","1->3"]
示例 2：

输入：root = [1]
输出：["1"]*/
    public List<String> binaryTreePaths(TreeNode root) {
        List<String> res=new ArrayList<String>();
        if (root==null) return res;
        List<Integer> path = new ArrayList<Integer>();
        getpath(root,path,res);
        return res;
    }
    public void getpath(TreeNode root,List<Integer> path,List<String> res){
        path.add(root.val);
        if (root.left==null&&root.right==null){
            StringBuffer sb=new StringBuffer();
            for (int i = 0; i < path.size(); i++) {
                if (i == path.size()-1) {
                    sb.append(path.get(i));
                }else {
                    sb.append(path.get(i)).append("->");
                }
            }
            res.add(new String(sb));

        }
        if (root.left!=null) {
            getpath(root.left,path,res);
            path.remove(path.size()-1);
        }
        if (root.right!=null) {
            getpath(root.right,path,res);
            path.remove(path.size()-1);
        }

    }
}
